package fr.afcepf.ai89.lagrandebouffe.data;

import java.util.List;

import fr.afcepf.ai89.lagrandebouffe.entity.Plat;

/**
 * Méthodes utilisées par l'application pour l'accès aux données manipulant le {@link Plat}.
 * Définit les traitements d'ajout, de recherche et de suppression d'un {@link Plat}.
 * @author stagiaire
 */
public interface IDataPlat {
/**
 * Méthode permettant l'ajout d'un {@link Plat} dans la BDD.
 * @param lePlat -le {@link Plat} à ajouter
 * @return
 * <code>
 * <ul>
 * <li><strong>true</strong><br/>
 * si le {@link Plat} est bien mangé.</li>
 * <li><strong>false</strong><br/>
 * si on a encore faim.</li>
 * </ul>
 * </code>
 */
Integer ajouter(Plat lePlat);
/**
 * Méthode permettant la suppression d'un {@link Plat} dans la BDD.
 * @param lePlat -le {@link Plat} à manger
 * @return
 * <code>
 * <ul>
 * <li><strong>true</strong><br/>
 * si le {@link Plat} est bien mangé.</li>
 * <li><strong>false</strong><br/>
 * si on a encore faim.</li>
 * </ul>
 * </code>
 */
boolean manger(Plat lePlat);
/**
 * Méthode permettant de rechercher un {@link Plat} par libelle.
 * @param libelle - libelle recherché dans le {@link Plat}
 * @return une liste de {@link Plat}.
 * <code>
 * <ul><li>une liste vide si aucun {@link Plat} ne correspond au libellé demandé.</li>
 * <li> une liste contenant tous les {@link Plat} dont le libellé contient le paramètre libellé du plat recherché.</li>
 * </ul>
 * </code>
 */
List<Plat> rechercherPlat(String libelle);
}
